package com.jrx.anytxn.param.mapper.ext;

import com.jrx.anytxn.common.annotation.ParamTuningAnnotation;
import com.jrx.anytxn.param.entity.PrOrganizationTable;
import com.jrx.anytxn.param.mapper.base.PrOrganizationTableMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 机构表的mapper接口扩展
 *
 * @author Qingyao Xing
 * @date 2019/9/27 16:11
 */
public interface ExtPrOrganizationTableMapper extends PrOrganizationTableMapper {
    /**
     * 根据机构ID和租户ID查询
     *
     * @param organizationId 机构号
     * @param tenantId       租户ID
     * @return com.jrx.anytxn.param.entity.PrOrganizationTable
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:45
     */
    PrOrganizationTable selectByOrganizationId(@Param("organizationId") String organizationId, @Param("tenantId") String tenantId);

    /***
     * 根据租户ID查询list集合
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:46
     * @param tenantId  租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.PrOrganizationTable>
     */
    List<PrOrganizationTable> selectAllByTenId(@Param("tenantId") String tenantId);

    /**
     * 根据字段是否为空更新
     *
     * @param organizationTable 机构参数
     * @return int
     * @author fan.yang
     * date: 2019/10/17 0017 下午 20:46
     */
    @ParamTuningAnnotation
    int updateByPrimaryKeySelectiveAndNotNull(PrOrganizationTable organizationTable);

    /**
     * （日切批次的查询）根据状态和批处理标志查询
     * * @param status
     *
     * @param batchInProgressFlag
     * @return com.jrx.anytxn.param.entity.PrOrganizationTable
     * @author Qingyao Xing
     * @date 2019/9/2 14:53
     */
    PrOrganizationTable selectByStatusAndFlag(@Param("status") String status, @Param("batchInProgressFlag") String batchInProgressFlag);

    /**
     * 日切批次的修改
     * * @param organizationTable
     *
     * @return int
     * @author Qingyao Xing
     * @date 2019/9/2 15:10
     */
    int updateDayCut(PrOrganizationTable organizationTable);


    /**
     * 根据主键ID和租户ID删除此信息
     *
     * @param organizationId
     * @param tenantId
     * @return int
     * @author fan.yang
     * date: 2019/10/11 0011 下午 15:21
     */
    @ParamTuningAnnotation
    int deleteByIdAndTenId(@Param("organizationId") String organizationId, @Param("tenantId") String tenantId);

    /**
     * 根据主键ID和租户ID查询信息
     *
     * @param id
     * @param tenantId
     * @return com.jrx.anytxn.param.entity.PrOrganizationTable
     * @author fan.yang
     * date: 2019/10/11 0011 下午 15:30
     */
    PrOrganizationTable selectByIdAndTenId(@Param("id") Long id, @Param("tenantId") String tenantId);

    /**
     * 根据机构号查询机构信息  不带租户ID  批次使用
     * @param organizationId
     * @return
     */
    PrOrganizationTable selectByOrgIdForBatch(@Param("organizationId") String organizationId);


    /**
     * 日切批次的修改
     * * @param organizationTable
     *
     * @return int
     * @author Qingyao Xing
     * @date 2019/9/2 15:10
     */
    int batchUpdate(List<PrOrganizationTable> organizationTableList);

}